#include<iostream>
#include<semaphore.h>
#include<pthread.h>

namespace SemModule
{
	const int defaultvalue = 1;
	class Sem
	{
	public:
		Sem(unsigned int sem_value = defaultvalue)
		{					  //初始化信号量大小
			sem_init(&_sem, 0, sem_value);
		}
		void P()
		{
			int n = sem_wait(&_sem);// 原子的
		}
		void V()
		{
			int n = sem_post(&_sem);// 原子的
		}
		~Sem()
		{
			sem_destroy(&_sem);
		}
	private:
		sem_t _sem;
	};
}